The present invention relates to a system and method by which control information for a personal information device (xe2x80x9cPIDxe2x80x9d) may more easily updated. In particular, the present invention relates to a system and method for reliably updating the firmware of the PID in a manner transparent to the user.
Personal Information Devices include the class of computers, personal digital assistants and electronic organizers that tend both to be physically smaller than conventional computers and to have more limited hardware and data processing capabilities. PIDs include, for example, products sold by Palm, Inc. of Santa Clara, Calif., under such trademark as Pilot, and Pilot 1000, Pilot 5000, PalmPilot, PalmPilot Personal, PalmPilot Professional, Palm, and Palm III, Palm V, Palm VII, m100, m505, as well as other products sold under such trade names as WorkPad, Franklin Quest, and Franklin Convey.
PIDs are generally discussed, for example, in U.S. Pat. Nos. 5,125,0398; 5,727,202; 5,832,489; 5,884,323; 5,889,888; 5,900,875; 6,000,000; 6,006,274; and 6,034,686, which are incorporated herein by reference. PIDs typically include a screen and data processor, allowing the PID user to operate a substantial variety of applications relating to, for example: electronic mail, a calendar, appointments, contact data (such as address and telephone numbers), notebook records, a calendar, expense reports, xe2x80x9cto do listsxe2x80x9d or games. PIDs also often include substantial electronic memory for storing such applications as well as data entered by the user. Due to their substantial variety of applications and uses, personal information devices are becoming increasingly widely used.
One increasingly popular application of personal information devices is their ability to share information with other properly equipped personal information devices, wirelessly and otherwise. For example, many types of user information such as electronic mail, calendar events, appointments, contact data, and the like exist in the form of digital data files stored within the memory of the personal information device. When equipped with communications hardware/software, the data files embodying the user information can be easily transferred from one personal information device to another. For example, one such application involves the transferring of electronic xe2x80x9cbusiness cardsxe2x80x9d from one personal information device to another, allowing their respective users to easily exchange contact information.
Much of the functionality of the PID is software based, in that software based routines are executed by the computer processor of the PID to perform the various functions of the applications. For example, the transmission and reception of electronic mail, calendar events, appointments, contact data, and the like relies upon the execution of software applications, a portion of which are firmware based. The firmware based functions tends to be relatively fixed, in that they tend to provide the basic building blocks for other software applications to utilize in implementing their functionality. Firmware is typically loaded and configured in the PID at the time of its manufacture, and is not normally configured or updated by the user.
There is a problem however, in that at times it may be advantageous to update the firmware of the PID. For example, there may be occasions where devices exit fabrication with inadvertently built-in faults or defects. One solution would be to have the user xe2x80x9cmail inxe2x80x9d the device to the factory to have a factory technician correct defects/faults. The obvious drawback to this solution is that it requires the user give up the use of the device for a period of time, often several weeks or more, and ties of valuable factory personnel manually updating a possibly large number of devices.
Another solution would be to xe2x80x9cpatchxe2x80x9d the firmware for the device with a custom-designed software routine that works around the defect/fault. For example, in a case where a number of devices have been inadvertently programmed with incorrect performance parameters (e.g., wrong configuration information for their wireless transceiver, incorrect error checking codes, or the like), a patch can be distributed to the users, wherein the users load the patch onto their devices, run the patch, and thereby update their firmware with the correct performance parameters. This solution has a number of drawbacks. For example, the manually executed patch requires the intervention of the user, where the user must locate the correct patch, load the correct patch, and properly execute it. There may be occasions where different devices require different patches. On such an occasion, the user must identify his device (e.g., by serial No.), based upon this identity, obtain the correct patch (e.g., via the Internet), and properly execute the patch and verify its success. Thus, there are numerous sources of potential error. Additionally, the widespread distribution of firmware patch routines presents obvious device vulnerabilities (e.g., potential viruses, firmware hacks, malicious exploits, and the like).
Thus, what is required is a solution that allows the automatic firmware updates of portable hand-held devices. The required solution should be robust and relatively immune to user error or confusion. In addition, what is required is a solution that permits the efficient targeted update of particular devices out of an entire number of devices that may have been fabricated. The required solution should be efficiently implemented as to not impose an undue processing burden on the devices. The required solution should function in a manner transparent to user. The present invention provides a novel solution to the above requirements.
The present invention provides a solution that allows the automatic firmware updates of portable hand-held devices. The present invention is robust and relatively immune to user error or confusion. In addition, the present invention permits the efficient targeted update of particular devices out of an entire number of devices that may have been fabricated. The present invention is efficiently implemented and not impose an undue processing burden on the devices. The present invention functions in a manner transparent to user.
In one embodiment, the present invention is implemented as a software based update application for automatically updating firmware of a hand-held device. To initiate the automatic update, a reset of the hand-held device is detected. Once a reset is detected, an update application is executed, wherein the update application performs the required updating steps. The execution of the update application is hidden, such that the update application executes transparently to user. The update application determines whether a flag has been set in a nonvolatile memory area of the hand-held device. The flag is used to indicate a previous execution of the update application. If the flag is set, the update application terminates. If the flag is not set, the update application determines whether a device ID (e.g., serial No.) of the device matches a device ID stored in a table of the update application. If the device ID of the hand-held device does not match the device ID stored in the table, the update application terminates and the flag is set. If the device ID of the hand-held device matches the device ID stored in the table, the update application updates the firmware of the hand-held device, sets the flag, and terminates.
In so doing, the firmware of the hand-held device can be updated without requiring user intervention or interaction. The update application can be distributed to the hand-held device from a centralized server via the Internet. Alternatively, the update application can be distributed to the hand-held device wirelessly from another hand-held device. To assist the device manufacturer, the update application can be configured to transmit status information from the hand-held device to a centralized server regarding the execution of the update application via the Internet. This can be done, for example, when the device connects to the Internet to synchronize user information (calendars, e-mail, etc.).
The update application can be distributed to devices as a hidden application within new ROM or firmware update releases that a user, for example, as part of an upgrade. Consequently, the update application can update the firmware without any knowledge or intervention by the user.
By executing transparently upon a device reset, the update application is robust and relatively immune to user error or confusion. By matching serial numbers, the update application enables the efficient targeted update of particular devices out of an entire number of devices that may have been fabricated. Thus, specific faults with specific batches of hand-held devices can be corrected. By checking flags prior to running its execution, the update application does not impose an undue processing burden on the devices.